import {
  patch
} from './vdom/patch';

//组件挂载
function mountComponent(vm) {
  //updata生命周期时挂载虚拟节点里的render函数(返回的是vnode)
  vm._update(vm._render());
}

//管理所有的生命周期函数
function lifecycleMixin(Vue) {
  Vue.prototype._update = function (vnode) {
    // console.log(vnode);

    const vm = this;

    //在生命周期里可以拿到真实的DOM节点
    //并在这个生命周期里进行补丁替换
    /**
     * 打补丁函数patch(oldNode, vNode) 
     * @param {*} oldNode 指视图html已经写好的模板节点
     * @param {*} vNode AST生成的虚拟节点
     */
    patch(vm.$el, vnode);
  }
}

export {
  mountComponent,
  lifecycleMixin
}